1. Field of the Invention
This invention relates generally to computer networks. More particularly, it relates to content distribution systems for such networks.
2. Description of the Prior Art
Digital computer networks are designed to share information, most commonly files, between different work stations or receivers on the network.
One of the most common types of networks is called a “client/server” network. In this type of network, one group of stations, called “workstations” are connected to one or more of a different class of stations called “file servers”. The workstations are typically locations at which where human beings interact with the network by doing word processing, mathematical calculations, viewing information on a monitor, designing spreadsheets and the like. The file servers are typically much fewer in number and are dedicated to storing and “serving up” files and other types of digital data for the users at the workstations to use. Since the workstations request and receive data from the file server, they are considered to be “clients” of the file server, hence the term “client/server”.
In a typical work setting, each workstation typically stores the application programs that a user uses during his daily activities such as a word processing program, a spreadsheet program or an Internet browser. The user starts the computer, retrieves a file from the file server, edits that file, and stores the file back on the file server when finished. Since the application programs are used over and over again in the course of the users' work, they are stored inside the users' workstations. The files (e.g., letters, pictures, spreadsheets, web pages, and other documents) that the user creates or views are stored on the file server.
In environments using this common client/server network such as businesses, universities or other workplaces, the function of the file server is to maintain a common store of the working files the users create, edit, or otherwise access. The file server controls access to those files and provides additional administrative services such as quick backup, storage and archiving of the files. By keeping all the files created by the users in a single location, the knowledge created by the business as it exists in all the files created by the users can be carefully controlled, protected and organized.
To retrieve a file from a file server, a workstation typically sends a request over the network to a program on the file server that identifies the requesting workstation and the name or other identifying characteristics of the file that is to be retrieved. In response to this initial query, the file server program creates a logical “connection” between the file server and the workstation. The file server may set aside a portion of its memory to manage this connection until the requested file is completely transferred. To “serve” or transmit the file over the network the file server retrieves sequential portions of the file from its data storage device (typically a disk drive) and sequentially sends each portion to the requesting workstation where the portions are reassembled and held in the memory circuits of the workstation. Once the file has been completely transferred, the connection is typically closed. The file server releases the memory allocated to the connection, thereby filing it for use in processing other file requests.
There are several common characteristics to a typical client/server network in a business environment.
First, each connection has a relatively short life. It typically takes only a fraction of a second to open a connection, retrieve a file, transmit the file to the users' workstation, and close the connection. Thus, each connection exists for only a short time.
Second, each file is relatively small. For example, a file that contains a business letter may be only 20 kilobytes in size.
Third, the file server receives files from users and administrators while it is sending files out to the users. Thus, it must constantly change its store of files and be ready to send out modified files that it may have received from a user only a few minutes or seconds before.
Fourth, the number of files a file server is expected to serve can be quite large. A typical business or university file server may store tens or hundreds of thousands of files that it must serve up on a moments notice.
Fifth, requests for files from each individual workstation are relatively infrequent. A user who is editing a letter at a workstation may request and receive a draft letter from the file server in a tenth of a second, spend fifteen minutes editing the letter, and then spend another tenth of a second saving that revised letter back to the file server. In this example, the user and his workstation spend a thousand times as long editing the letter as the user spent communicating with the file server to retrieve and to save the letter.
Sixth, there are only a relative handful of users connected to (and requesting files from) each file server at one time. A typical business department may have only 50 or 100 users who are connected to a departmental file server and make requests on it. There may be many hundreds or thousands of other people who can connect to the file server over a wider LAN or WAN arrangement, but the requests from these additional users are only occasional since they are typically in different departments with different duties and their own local file servers handle the vast majority of their file storage and retrieval needs.
Given these common characteristics of a typical computing environment at work, it makes perfect sense to use a client/server arrangement in which (1) each workstation or receiver sends its own connection request over the network to the file server, (2) the file server and the workstation create an individual connection for serving that file, (3) the file is sent, and (4) the connection is broken.
In the last fifteen years, however, computer networks have been increasingly used to provide a different type of content to a different class of users than users in a traditional work setting. For example, computer networks have been proposed for serving up extremely large files, such as files containing songs, movies or television programs. In these networks, the data flow is typically one-way: from the file server to the user. The user requests a file not to receive it, store it, edit it and save it back to the file server, but to immediately watch or listen to it.
In these types of networks, the connection between the computer providing the file and the computer receiving the file must be maintained for the entire length of time that the user is interacting with his workstation.
This places an increased burden on the file server. In a typical work environment, a file server can service hundreds of file requests per minute. It creates connections, serves (or retrieves) files, and closes the connections in a fraction of a second. In these new networks, the file server must simultaneously maintain perhaps hundreds of connections, providing each connection and requesting work station with a virtually continuous flow of data for the entire time that the user is operating his workstation (or, rather “receiver” since the data flow is almost entirely one-way: from the server to the user). Maintaining many simultaneous connections and many large, simultaneous, and continuous data flows or “streams” places a heavy burden on a computer network using traditional client/server connection methods, since each transfer requires a long-lived connection on the file server and because each file server must therefore handle or service many more simultaneous connections. As a result, the file server and the network leg connecting the file server to the receivers can be over burdened.
What is needed therefore, is a method of distributing content over a computer network from one or more file servers to several workstations or other receivers that reduces the computing and network burden.
What is also needed is a method for offloading or handing off requests for data (and their corresponding connections) from the file server to other receivers that are receiving or have already received the requested content.
What is also needed is a method for determining whether newly requested content is already being provided to another receiver on the network and, if so, directing subsequent content requests to that receiver.
It is an object of this invention to provide each such method in one or more embodiments of the invention.